package com.zmovie.framework.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import jdk.nashorn.internal.objects.annotations.Constructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 
 * @TableName session
 */
@TableName(value ="session")
@Data
@ApiModel
@NoArgsConstructor
public class Session implements Serializable {
    /**
     * 场次id
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("主键")
    private Integer id;

    /**
     * 影院id
     */
    @ApiModelProperty("影院id")
    @NotNull(message = "影院不能为空")
    private Integer cinemaId;

    /**
     * 影厅id
     */
    @ApiModelProperty("影厅id")
    @NotNull(message = "影厅不能为空")
    private Integer hallId;

    /**
     * 该场次语言版本
     */
    @ApiModelProperty("该场次语言版本")
    @NotBlank(message = "语言不能为空")
    private String language;

    /**
     * 电影id
     */
    @ApiModelProperty("电影id")
    @NotNull(message = "电影不能为空")
    private Integer movieId;

    /**
     * 电影放映时段id
     */
    @ApiModelProperty("电影放映时段id")
    @NotNull(message = "电影放映时段不能为空")
    private Integer movieRuntimeId;

    /**
     * 场次日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("场次日期")
    @NotNull(message = "场次日期不能为空")
    private Date date;

    /**
     * 场次状态，1表示上映中，0表示已下架
     */
    @ApiModelProperty("场次状态，1表示上映中，0表示已下架")
    private Integer state;

    /**
     * 票价
     */
    @NotNull(message = "价格不能为空")
    @ApiModelProperty("票价")
    private BigDecimal price;

    /**
     * 影厅提示
     */
    @ApiModelProperty("影厅提示")
    @NotBlank(message = "影厅提示不能为空")
    private String tips;

    /**
     * 场次对应座位信息，采用二维数组[[],[]]存储每一个座位的状态，存储的值为0表示可选，1表示空(无座位)，值为2表示已选择，值为3表示已售出，
     */
    private String seats;

    /**
     * 该场次售出的座位的个数，用于判断电影票是否售罄
     */
    private Integer nums;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}